#include<iostream>
#include<string.h>
using namespace std;
const int N=10;
int n;
char g[N][N];
bool row[N],col[N],dg[N],udg[N];

void dfs1(int pos)
{
    if(pos==n)
    {
        for(int i=0;i<n;++i)
        {
            for(int j=0;j<n;++j)
                printf("%c",g[i][j]);
            printf("\n");
        }
        printf("\n");
    }
    
    for(int i=0;i<n;++i)
    {
        if(!col[i]&&!dg[pos+i]&&!udg[n-pos+i])
        {
            col[i]=dg[pos+i]=udg[n-pos+i]=true;
            g[i][pos]='Q';
            dfs(pos+1);
            col[i]=dg[i+pos]=udg[n-pos+i]=false;
            g[i][pos]='.';
        }
    }
}

void dfs2(int x,int y,int s)
{
    if(y==n) y=0,++x;
    if(x==n)
    {
        if(s==n)
        {
            for(int i=0;i<n;++i)
            {
                for(int j=0;j<n;++j) printf("%c",g[i][j]);
                printf("\n");
            }
            printf("\n");
        }
        
        return ;
    }
    
    dfs2(x,y+1,s);
    
    if(!row[x]&&!col[y]&&!dg[x+y]&&!udg[x-y+n])
    {
        g[x][y]='Q';
        row[x]=col[y]=dg[x+y]=udg[x-y+n]=true;
        dfs2(x,y+1,s+1);
        g[x][y]='.';
        row[x]=col[y]=dg[x+y]=udg[x-y+n]=false;
    }
}

int main()
{
    cin>>n;
    for(int i=0;i<n;++i)
        for(int j=0;j<n;++j)
            g[i][j]='.';
    dfs(0);
    return 0;
}